/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package agencia;

import java.io.Serializable;
import javax.persistence.Entity; //Pasa clase a tabla
import javax.persistence.Id;
import javax.persistence.GeneratedValue; //Forma que se generan los ids
import javax.persistence.GenerationType; //Typos de datos
import javax.persistence.EnumType;
import javax.persistence.Enumerated;

import javax.persistence.Table; //Personalizar nombre de tabla sino idem class
import javax.persistence.Transient; //para atributos que se equiran NO persistir
import javax.persistence.Column; //Personalizar nombre de columna en tabla sino idem class

import javax.persistence.CascadeType;
import javax.persistence.FetchType;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.JoinColumn;

import java.util.List;
import java.util.ArrayList;
import org.hibernate.*;
import org.hibernate.annotations.CollectionOfElements;
import org.hibernate.annotations.IndexColumn;
/**
 *
 * @author martin
 */

@Entity
public class Loteria {



    public enum Day {
        Domingo, Lunes, Martes, Miercoles,
        Jueves, Viernes, Sabado
    }

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private long idLoteria;

    private String nombre;

    @ManyToOne(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
    private TipoSorteo tipoSorteo;
    
    /*
    @CollectionOfElements
    @IndexColumn(name = "posicion")
    private List<Day> diasSorteo = new ArrayList<Day> ();

    public List<Day> getDiasSorteo() {
        return diasSorteo;
    }

    public void setDiasSorteo(List<Day> diasSorteo) {
        this.diasSorteo = diasSorteo;
    }
    */



    

    


        
    public Loteria(String nombre, TipoSorteo tipoSorteo) {
        this.nombre = nombre;
        this.tipoSorteo = tipoSorteo;
    }

    public Loteria() {
    }
    /*
    public Loteria(String nombre, TipoSorteo tipoSorteo,List<Day> dias) {
        this.nombre = nombre;
        this.tipoSorteo = tipoSorteo;
        this.diasSorteo=dias;
    }
    */

    public long getIdLoteria() {
        return idLoteria;
    }

    public void setIdLoteria(long idLoteria) {
        this.idLoteria = idLoteria;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public TipoSorteo getTipoSorteo() {
        return tipoSorteo;
    }

    public void setTipoSorteo(TipoSorteo tipoSorteo) {
        this.tipoSorteo = tipoSorteo;
    }

    public String toString () {
    //Lo que se muestra en el JList sale de implementar este metodo
            String line;
            line = "";
            line=this.getNombre();
            line=line + (spc (12-line.length()));
            line = line + " "+this.getTipoSorteo().getDescripcion();
            return line;
    }

    public static final List<Loteria> getLoterias () {
        Session session = HibernateUtil.getMySession();
        Query q = session.createQuery("from Loteria Loteria"); //1ero tipo despues tabla [where]
        List loterias = q.list();
        return loterias;
    }
    private String spc (int p) {
    String x;

    x="";
    for (int t=0;t<p;t++){
         x=x+" ";
    }
    return x;

    }

}
